package com.ywger.integration.constants.log;

/**
 * @author chenmeng
 * @date 2021-07-18 17:38
 * @desc 日志模板，用于规范日志。打印日志时使用该类字符串作为format
 * 注意，日志可以接受 Throwable t 参数，不需要{} 通配符匹配。需要放在log参数最后一位，会输出stack堆栈信息。
 */
public class LogFormat {

    /**
     * 系统初始化日志模板。 初始化开始，初始化结束，打印业务日志
     */
    //[系统初始化][{初始化组件，启动mq、加载缓存等}][开始]
    public static final String SYS_INIT_BEGIN_LOG_FORMAT=LogType.INIT.getTypeName()+"[{}初始化][开始]";
    //[系统初始化][{初始化组件，启动mq、加载缓存等}][%s 自定义参数]
    public static final String SYS_INIT_LOG_END_FORMAT=LogType.INIT.getTypeName()+"[{}][初始化完成]";
    //[系统初始化][{初始化组件，启动mq、加载缓存等}][%s 自定义参数]
    public static final String SYS_INIT_LOG_FORMAT=LogType.INIT.getTypeName()+"[{}][%s]";

    /**
     * 定时任务日志模板。 启动，停止，打印业务日志
     */
    //[定时任务][{定时任务名称}][开始]
    public static final String TASK_START_FORMAT=LogType.TASK.getTypeName()+"[{}][启动]";
    //[定时任务][{定时任务名称}][开始]
    public static final String TASK_BIZ_FORMAT=LogType.TASK.getTypeName()+"[{}][%S]";
    //[定时任务][{定时任务名称}][结束]
    public static final String TASK_END_FORMAT=LogType.TASK.getTypeName()+"[{}][结束]";


    /**
     * 外部调用日志模板
     */
    //[{ip}][{请求方法}]=>[{请求url}],请求体=>[{请求体}]
    public static final String HTTP_REQ_FORMAT=LogType.REQUEST.getTypeName()+"[{}][{}]=>[{}],请求体=>[{}]";

    //[{ip}][{请求方法}]=>[{请求url}],请求体=>[{请求体},响应=>[{响应}],耗时=>[{耗时} ms]]
    public static final String HTTP_RES_FORMAT=LogType.REQUEST_RES.getTypeName()+"[{}][{}]=>[{}],请求体=>[{}],响应=>[{}],耗时=>[{} ms]";

    /**
     * 调用第三方日志模板
     */
    //[{请求方法}]=>[{请求url}],请求体=>[{请求体}]
    public static final String HTTP_INTEGRATION_REQ_FORMAT=LogType.INTEGRATION.getTypeName()+"[{}]=>[{}],请求体=>[{}]";

    //[{请求方法}]=>[{请求url}],请求体=>[{请求体}],状态码=>[{响应状态码}],响应=>[{响应}],耗时=>[{耗时} ms]
    public static final String HTTP_INTEGRATION_RES_FORMAT=LogType.INTEGRATION_RES.getTypeName()+"[{}]=>[{}],请求体=>[{}],状态码=>[{}],响应=>[{}],耗时=>[{} ms]";

    /**
     * MQ 日志模板
     */
    //[{事件名称}],[{mq消息体}]
    public static final String MQ_FORMAT="[{}],[{}]";

    /**
     * sql日志模板
     * 暂无
     */
    /**
     * 业务日志模板
     */
    // [{主键}][%s自定义参数]
    public static final String BIZ_ONE_KEY_FORMAT="[{}][%s]";

    // [{主键1}#{主键2}][%s自定义参数]
    public static final String BIZ_TOW_KEY_FORMAT="[{}#{}][%s]";



    //[多线程异常][线程名]=>异常
    public static final String THREAD_ERROR_FORMAT=LogType.THREAD_ERROR.getTypeName()+"[{}]=>";


}
